import { Overlay } from '../covering/overlay'

/**
 * 此类是表示一个图层容器，用于存储 `T.Overlay` 的继承的图层
 */
export interface LayerGroup {
    /**
     * 构建一个存储图层的容器
     */
    new(layers: Array<Overlay>): LayerGroup;

    /**
     * 从容器中增加一个图层
     */
    addLayer: (layer: Overlay) => void;

    /**
     * 从容器中移除一个图层
     */
    removeLayer: (layer: Overlay) => void;

    /**
     * 判断图层是否在容器中
     */
    hasLayer: (layer: Overlay) => boolean;

    /**
     * 得到容器中的所有图层
     */
    getLayers: () => Array<Overlay>;

    /**
     * 除容器中的所有图层
     */
    clearLayers: () => void;

    /**
     * 设置容器 `Z` 值
     */
    setZIndex: (zIndex: number) => void;

    /**
     * 通过 `ID` 获取其对应的图层
     */
    getLayer: (id: string) => Overlay;

    /**
     * 获取容器中存在图层的唯一 `ID`
     */
    getLayerId: (layer: Overlay) => string
}
